/**
 * file-upload 工具类
 * 
 */
(function() {
	
	var $FileUpload = function(classificationId) {
		this.uploadUrl = Feng.ctxPath + '/publiclibrary/upload/'+classificationId;
		this.fileSizeLimit = 500 * 1024 * 1024;
        this.uploadBarId = null;
        this.uploader = null;
	};

	$FileUpload.prototype = {
		/**
		 * 初始化webUploader
		 */
		init : function() {
			var uploader = this.create();
			this.bindEvent(uploader);
			this.uploader = uploader;
			return uploader;
		},
		
		/**
		 * 创建webuploader对象
		 */
		create : function() {
			var webUploader = WebUploader.create({
				auto : false, //不自动上传
				pick : {
					id : '#pick' ,
					multiple : true,// 上传多个
				},
				swf : Feng.ctxPath
						+ '/static/js/plugins/webuploader/Uploader.swf',
				disableGlobalDnd : true,  // 是否禁止整个页面的拖拽功能
				duplicate : true,
				server : this.uploadUrl,
				fileSingleSizeLimit : this.fileSizeLimit
			});
			
			return webUploader;
		},

		/**
		 * 绑定事件
		 */
		bindEvent : function(bindedObj) {
			var me =  this;
			bindedObj.on('fileQueued', function(file) {
				var	tr = "<tr id = '"+file.id+"'>" +
						"<td>"+file.name+"</td>" +
						"<td>"+getFileSize(file.size)+"</td>" +
						"<td>等待上传</td>" +
						"</tr>";
				$("#fileList").append($(tr));

			});
			
			// 文件上传过程中创建进度条实时显示。
			/*bindedObj.on('uploadProgress', function(file, percentage) {
                $("#"+me.uploadBarId).css("width",percentage * 100 + "%");
			});*/

			// 文件上传成功，给item添加成功class, 用样式标记上传成功。
			bindedObj.on('uploadSuccess', function(file) {
				$("#" + file.id +" td:eq(2)").text("上传成功");
			});

			// 文件上传失败，显示上传出错。
			bindedObj.on('uploadError', function(file) {
				$("#" + file.id +" td:eq(2)").text("上传失败");
			});

			// 其他错误
			bindedObj.on('error', function(type) {
				if ("Q_EXCEED_SIZE_LIMIT" == type) {
					Feng.error("总文件大小超出了限制");
				} else if ("Q_TYPE_DENIED" == type) {
					Feng.error("文件类型不满足");
				} else if ("Q_EXCEED_NUM_LIMIT" == type) {
					Feng.error("上传数量超过限制");
				} else if ("F_DUPLICATE" == type) {
					Feng.error("文件选择重复");
				} else if("F_EXCEED_SIZE" == type){
					Feng.error("您只能存放小于"+(me.fileSizeLimit/1048576)+"M 的文件哦~");
				}else {
					Feng.error("上传过程中出错");
				}
			});

			// 完成上传完了，成功或者失败
			bindedObj.on('uploadComplete', function(file) {
			});
		},
		
		upload : function(){
			this.uploader.upload();
		},
	};

	function getFileSize(filesize){
		if(filesize<1024){
			return parseInt(filesize)+"B";
		}else if(filesize<1048576){
			return parseInt(filesize/1024)+"KB";
		}else{
			return parseInt(filesize/1048576)+"MB"
		}
	}
	
	
	window.$FileUpload = $FileUpload;

}());